package com.huluobo.jetpackkotlindemo

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.huluobo.jetpackkotlindemo.databinding.ActivityMainBinding
import com.huluobo.jetpackkotlindemo.lifecycle.AdActivity

/**
 * ViewBinding总结:
 * 1.首先使用时需要build.gradle中开启enabled = true
 * 2.开启之后所有xml文件都会对应生成一个类,也就是由xml文件名生成的驼峰命名法的实现类
 * 3.setContentView(activityMainBinding.root)这个方法中不能直接使用layout的ID,需要使用binding的root才能绑定布局
 * 4.viewBinding的特点,具有空安全,视图(控件)绑定会对视图直接引用
 * 5.具有类型安全的属性,不需要进行强制转换,可以自动匹配xml文件中控件的类型
 */

class MainActivity : AppCompatActivity() {
    lateinit var activityMainBinding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)
//        TipDialog(this).show()
//        Handler().postDelayed({ finish() }, 2000)

        //通过Activity中的findViewById方法来找到对应的View进行初始化
//        val edContent = findViewById<EditText>(R.id.ed_content)
//        val tvContent = findViewById<TextView>(R.id.tv_content)
//        val btnContent = findViewById<Button>(R.id.btn_content)

        //ButterKnife 通过注解的形式进行控件的注入
//        @BindView(R.id.ed_content)
//        val edContent

        //kotlin-android-extensions 可以通过系统的插件来实现直接通过id名获取控件
//        ed_content.text = "输入框"
        //以上是之前用过的系统或者插件或者第三方的控件绑定的形式

        //使用ViewBinding进行实例化
        activityMainBinding.edContent.setText("")
        activityMainBinding.tvContent.text = "123"
        activityMainBinding.btnContent.setOnClickListener {
            val intent = Intent(this, AdActivity::class.java)
            startActivity(intent)
        }

    }
}